package com.ssy.lingxi.product.service;

import com.ssy.lingxi.common.model.dto.UserLoginCacheDTO;
import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.product.api.model.request.warehouse.*;
import com.ssy.lingxi.product.api.model.response.warehouse.InvoicesTypeListResponse;

import java.util.List;

/**
* 单据类型管理
* @author wrc
* @date 2020/6/22
*/
public interface InvoicesTypeService {

    /**
    * 查询单据类型列表
    * @author wrc
    * @date 2020/6/22
     * @param request
    */
    Wrapper<PageData<InvoicesTypeListResponse>> invoicesTypeList(InvoicesTypeListRequest request, UserLoginCacheDTO sysUser);

    /**
    * 查询单据类型详情
    * @author wrc
    * @date 2020/8/6
    */
    Wrapper<InvoicesTypeListResponse> invoicesTypeDetails(Long id);

    /**
    * 删除单据类型
    * @author wrc
    * @date 2020/6/22
     * @param request
    */
    Wrapper<Void> invoicesTypeDelete(Long id);

    /**
    * 增加/修改单据类型
    * @author wrc
    * @date 2020/6/22
    */
    Wrapper<Void> invoicesTypeAddOrUpdate(InvoicesTypeAddOrUpdateRequest request, UserLoginCacheDTO sysUser);

    /**
    * 停用启用单据类型
    * @author wrc
    * @date 2020/6/22
    */
    Wrapper<Void> invoicesTypeStartOrStop(InvoicesTypeStateUpdateRequest request);

    /**
    * 查询全部单据类型
    * @author wrc
    * @date 2020/8/5
    */
    Wrapper<List<InvoicesTypeListResponse>> invoicesTypeAll(UserLoginCacheDTO sysUser);
}
